﻿using System;

namespace Ioacp.Irisking
{
    #region 这些主要是外部使用类，或者生成新的结构，以便让外部使用

    /// <summary>
    /// 识别结果
    /// </summary>
    public class IKPersonRecog
    {
        public int index { get; set; }

        /// <summary>
        /// 识别记录序列号，设备上识别记录序列号是自增的
        /// </summary>
        public int recogSeq { get; set; }

        /// <summary>
        /// 设备序列号
        /// 系统中，(devSn, recogSeq)组成一个二元组
        /// 该二元组是不重复的
        /// </summary>
        public string devSn { get; set; }

        /// <summary>
        /// 识别人员的工号
        /// </summary>
        public string workSn { get; set; }

        /// <summary>
        /// 识别时间
        /// </summary>
        public string recogTime { get; set; }

        /// <summary>
        /// 人员id，虹霸系统中，人员ID是人员的唯一标志
        /// 如果人员id=0，表示本次识别失败
        /// </summary>
        public int personId { get; set; }

        /// <summary>
        /// 人员姓名
        /// </summary>
        public string personName { get; set; }

        public string sysTime { get; set; }

        /// <summary>
        /// 把底层的ik_device_t这个结构转化为IKDevice
        /// IKDevice 这个结构比较符合C#的结构规则
        /// 这个结构，用户使用起来更加的方便
        /// </summary>
        /// <param name="dev"></param>
        /// <returns></returns>
        public static IKPersonRecog FromValue(TyPersonRecog ty, int idx)
        {
            IKPersonRecog _recog = new IKPersonRecog();
            _recog.index = idx;
            _recog.devSn = ty.dev_sn;
            _recog.personId = ty.person_id;
            _recog.personName = ty.name;
            _recog.recogSeq = ty.recog_id;
            _recog.recogTime = ty.recog_time;
            _recog.workSn = ty.work_sn;
            //_recog.sysTime = DateTime.Now.ToLocalTime().ToString("yyyy-MM-dd hh:mm:ss")
            //    + "."
            //    + DateTime.Now.Millisecond.ToString()
            //    ;

            _recog.sysTime = DateTime.Now.ToLocalTime().ToString("F")
                + "."
                + DateTime.Now.Millisecond.ToString();

            return _recog;
        }
    }

    #endregion
}